<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    
    <title>audit 简单使用 | jouyouyun&#39;s blog</title>
    <meta name="viewport" content="width=device-width,minimum-scale=1">
    <meta name="description" content="audit 是 linux 下的审计系统，包含内核模块和系统服务。可使用 audit 对文件变更、系统调用、任务创建、用户事件等进行审计。
可使用 sudo auditctl -s 获取内核审计模块的状态，可使用 sudo systemctl status auditd 获取审计服务的状态。在添加规则之前，需要确保审计内核模块和审计服务正常。">
    <meta name="generator" content="Hugo 0.105.0">
    
    
    
    
      <meta name="robots" content="noindex, nofollow">
    

    
<link rel="stylesheet" href="/ananke/css/main.min.css" >



    
    
    
      

    

    
    
    <meta property="og:title" content="audit 简单使用" />
<meta property="og:description" content="audit 是 linux 下的审计系统，包含内核模块和系统服务。可使用 audit 对文件变更、系统调用、任务创建、用户事件等进行审计。
可使用 sudo auditctl -s 获取内核审计模块的状态，可使用 sudo systemctl status auditd 获取审计服务的状态。在添加规则之前，需要确保审计内核模块和审计服务正常。" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://jouyouyun.github.io/post/audit-usage/" /><meta property="article:section" content="post" />
<meta property="article:published_time" content="2021-04-25T06:20:21+08:00" />
<meta property="article:modified_time" content="2021-04-25T16:29:42+08:00" />

<meta itemprop="name" content="audit 简单使用">
<meta itemprop="description" content="audit 是 linux 下的审计系统，包含内核模块和系统服务。可使用 audit 对文件变更、系统调用、任务创建、用户事件等进行审计。
可使用 sudo auditctl -s 获取内核审计模块的状态，可使用 sudo systemctl status auditd 获取审计服务的状态。在添加规则之前，需要确保审计内核模块和审计服务正常。"><meta itemprop="datePublished" content="2021-04-25T06:20:21+08:00" />
<meta itemprop="dateModified" content="2021-04-25T16:29:42+08:00" />
<meta itemprop="wordCount" content="220">
<meta itemprop="keywords" content="audit,file,exec,pid,cmd,program," /><meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="audit 简单使用"/>
<meta name="twitter:description" content="audit 是 linux 下的审计系统，包含内核模块和系统服务。可使用 audit 对文件变更、系统调用、任务创建、用户事件等进行审计。
可使用 sudo auditctl -s 获取内核审计模块的状态，可使用 sudo systemctl status auditd 获取审计服务的状态。在添加规则之前，需要确保审计内核模块和审计服务正常。"/>

	
  </head>

  <body class="ma0 avenir bg-near-white">

    
   
  

  <header>
    <div class="bg-black">
      <nav class="pv3 ph3 ph4-ns" role="navigation">
  <div class="flex-l justify-between items-center center">
    <a href="/" class="f3 fw2 hover-white no-underline white-90 dib">
      
        jouyouyun&#39;s blog
      
    </a>
    <div class="flex-l items-center">
      

      
        <ul class="pl0 mr3">
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/post/" title="Archives 页">
              Archives
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/tags/" title="Tags 页">
              Tags
            </a>
          </li>
          
          <li class="list f5 f4-ns fw4 dib pr3">
            <a class="hover-white no-underline white-90" href="/categories/" title="Categories 页">
              Categories
            </a>
          </li>
          
        </ul>
      
      
<div class="ananke-socials">
  
    <a href="https://github.com/jouyouyun" target="_blank" class="github ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="GitHub link" rel="noopener" aria-label="follow on GitHub——Opens in a new window">
      
        <span class="icon"><svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>
</span>
      
<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
</svg>
</span></a>
  
</div>

    </div>
  </div>
</nav>

    </div>
  </header>



    <main class="pb7" role="main">
      
  
  <article class="flex-l flex-wrap justify-between mw8 center ph3">
    <header class="mt4 w-100">
      <aside class="instapaper_ignoref b helvetica tracked">
          
        POSTS
      </aside>
      










  <div id="sharing" class="mt3 ananke-socials">
    
  </div>


      <h1 class="f1 athelas mt3 mb1">audit 简单使用</h1>
      
      <p class="tracked">
         <strong>jouyouyun</strong>
      </p>
      
      
      
      <time class="f6 mv4 dib tracked" datetime="2021-04-25T06:20:21+08:00">四月 25, 2021</time>
      

      
      
    </header>
    <div class="nested-copy-line-height lh-copy serif f4 nested-links mid-gray pr4-l w-two-thirds-l"><p><code>audit</code> 是 <code>linux</code> 下的审计系统，包含内核模块和系统服务。可使用 <code>audit</code> 对文件变更、系统调用、任务创建、用户事件等进行审计。</p>
<p>可使用 <code>sudo auditctl -s</code> 获取内核审计模块的状态，可使用 <code>sudo systemctl status auditd</code> 获取审计服务的状态。在添加规则之前，需要确保审计内核模块和审计服务正常。</p>
<h2 id="常用操作">常用操作</h2>
<h3 id="添加规则">添加规则</h3>
<p><code>-a &lt;list,action&gt;</code> 参数可以添加规则，可用值分为 <code>list</code> 和 <code>action</code> 。 <code>list</code> 表示需要操作的事件队列， <code>action</code> 表示事件发生时的操作。</p>
<ul>
<li>
<p><code>list</code> 可用值为</p>
<ul>
<li><code>task</code> 添加规则到每一个任务列表，只在任务创建(<code>fork/clone</code>)时触发</li>
<li><code>exit</code> 添加规则到系统调用列表，在系统调用退出时触发</li>
<li><code>user</code> 添加规则到用户消息过滤列表，用于内核过滤用户空间的事件</li>
<li><code>exclude</code> 添加到事件排除列表，用于不希望接收的事件</li>
</ul>
</li>
<li>
<p><code>action</code> 可用值为</p>
<ul>
<li><code>never</code> 不产生审计记录</li>
<li><code>always</code> 纪录</li>
</ul>
</li>
</ul>
<h3 id="删除规则">删除规则</h3>
<p><code>-d &lt;list,action&gt;</code> 参数可以删除规则，与 <code>-a</code> 时对应。</p>
<h3 id="指定选项">指定选项</h3>
<p><code>-F</code> 参数用于指定规则选项</p>
<h3 id="设置过滤标识">设置过滤标识</h3>
<p><code>-k</code> 可为规则指定一个标识，可认为是此条规则的 <code>id</code> ，可在搜索审计日志时使用。</p>
<h3 id="指定系统调用">指定系统调用</h3>
<p><code>-S</code> 可指定需要审计的系统调用</p>
<h3 id="指定文件">指定文件</h3>
<p><code>-w</code> 参数可指定需要审计的文件</p>
<h3 id="指定文件权限">指定文件权限</h3>
<p><code>-p</code> 可指定文件变更时需要的属性，可用值为 <code>r(read), w(write), x(execute), a(attribute change)</code></p>
<h3 id="删除文件规则">删除文件规则</h3>
<p><code>-W</code> 参数可删除添加的文件审计规则</p>
<h3 id="查询规则列表">查询规则列表</h3>
<p><code>-l</code> 参数可获得已添加的规则列表</p>
<h2 id="示例场景">示例场景</h2>
<h3 id="审计文件变动">审计文件变动</h3>
<p>审计 <code>/etc/systemd/system.conf</code> 文件的写入变动，添加规则：</p>
<p><code>sudo auditctl -w /etc/systemd/system.conf -p w -k system_conf_audit</code></p>
<p>当这个文件以写入方式打开或发生写入后，会记录相关的审计日志，可用 <code>ausearch</code> 查看：</p>
<p><code>sudo ausearch -k system_conf_audit</code></p>
<p>删除这条审计规则可用：</p>
<p><code>sudo auditctl -W /etc/systemd/system.conf -p w -k system_conf_audit</code></p>
<h3 id="审计系统调用">审计系统调用</h3>
<p>审计 <code>kill</code> 调用，规则：</p>
<p><code>sudo auditctl -a exit,always -F arch=b64 -S kill -k kill_audit</code></p>
<p>这里的 <code>-F arch=b64</code> 是表示检讨 <code>64</code> 位的 <code>kill</code> 调用，必须指定。这样在发生 <code>kill</code> 调用时就会产生审计日志，查看方式还是使用 <code>ausearch</code></p>
<p><code>sudo ausearch -k kill_audit</code></p>
<p>删除这条审计规则可用：</p>
<p><code>sudo auditctl -d exit,always -S kill -k kill_audit</code></p>
<h3 id="审计iptables变更">审计iptables变更</h3>
<p><code>iptables</code> 会触发 <code>setsockopt</code> 调用，因此通过这个系统调用来审计 <code>iptables</code> 变更：</p>
<p><code>auditctl -a exit,always -F arch=b64 -S setsockopt -k iptables_audit</code></p>
<p>这样在 <code>iptables</code> 规则发生变更时就会产生审计日志，但这样只能看到改变 <code>iptables</code> 规则的程序 <code>pid</code> ，看不到程序名，可结合 <code>execve</code> 调用来获取程序名：</p>
<p><code>auditctl -a exit,always -F arch=b64 -S setsockopt -S execve -k iptables_audit</code></p>
<p>查看日志、删除规则与上文相同。</p>
<h2 id="持久化">持久化</h2>
<p><code>audit</code> 的规则配置文件在 <code>/etc/audit/rules.d/</code> 目录，可将规则添加到此目录下，即可达到持久化的目的，如需立即生效，可重启 <code>auditd</code> 服务。</p>
<p>如将上述示例的规则进行持久化，添加文件 <code>/etc/audit/rules.d/self.rules</code> ，内容如下：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>-w /etc/systemd/system.conf -p w -k self_system_conf
</span></span><span style="display:flex;"><span>-a exit,always -F arch<span style="color:#f92672">=</span>b64 -S kill -k self_kill
</span></span><span style="display:flex;"><span>-a exit,always -F arch<span style="color:#f92672">=</span>b64 -S setsockopt -S execve -k self_iptables
</span></span></code></pre></div><h2 id="更多资料">更多资料</h2>
<ul>
<li><code>man auditctl</code></li>
</ul><ul class="pa0">
  
   <li class="list di">
     <a href="/tags/audit" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">audit</a>
   </li>
  
   <li class="list di">
     <a href="/tags/file" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">file</a>
   </li>
  
   <li class="list di">
     <a href="/tags/exec" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">exec</a>
   </li>
  
   <li class="list di">
     <a href="/tags/pid" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">pid</a>
   </li>
  
   <li class="list di">
     <a href="/tags/cmd" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">cmd</a>
   </li>
  
   <li class="list di">
     <a href="/tags/program" class="link f5 grow no-underline br-pill ba ph3 pv2 mb2 dib black sans-serif">program</a>
   </li>
  
</ul>
<div class="mt6 instapaper_ignoref">
      
      
      </div>
    </div>

    <aside class="w-30-l mt6-l">




  <div class="bg-light-gray pa3 nested-list-reset nested-copy-line-height nested-links">
    <p class="f5 b mb3">相关內容</p>
    <ul class="pa0 list">
	   
	     <li  class="mb2">
          <a href="/post/go-file-exist/">Go 笔记: 判断文件是否存在</a>
        </li>
	    
    </ul>
</div>

</aside>

  </article>

    </main>
    <footer class="bg-black bottom-0 w-100 pa3" role="contentinfo">
  <div class="flex justify-between">
  <a class="f4 fw4 hover-white no-underline white-70 dn dib-ns pv2 ph3" href="https://jouyouyun.github.io" >
    &copy;  jouyouyun 2023 
  </a>
    <div>
<div class="ananke-socials">
  
    <a href="https://github.com/jouyouyun" target="_blank" class="github ananke-social-link link-transition stackoverflow link dib z-999 pt3 pt0-l mr1" title="GitHub link" rel="noopener" aria-label="follow on GitHub——Opens in a new window">
      
        <span class="icon"><svg style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
  <path d="M256,32C132.3,32,32,134.8,32,261.7c0,101.5,64.2,187.5,153.2,217.9c11.2,2.1,15.3-5,15.3-11.1   c0-5.5-0.2-19.9-0.3-39.1c-62.3,13.9-75.5-30.8-75.5-30.8c-10.2-26.5-24.9-33.6-24.9-33.6c-20.3-14.3,1.5-14,1.5-14   c22.5,1.6,34.3,23.7,34.3,23.7c20,35.1,52.4,25,65.2,19.1c2-14.8,7.8-25,14.2-30.7c-49.7-5.8-102-25.5-102-113.5   c0-25.1,8.7-45.6,23-61.6c-2.3-5.8-10-29.2,2.2-60.8c0,0,18.8-6.2,61.6,23.5c17.9-5.1,37-7.6,56.1-7.7c19,0.1,38.2,2.6,56.1,7.7   c42.8-29.7,61.5-23.5,61.5-23.5c12.2,31.6,4.5,55,2.2,60.8c14.3,16.1,23,36.6,23,61.6c0,88.2-52.4,107.6-102.3,113.3   c8,7.1,15.2,21.1,15.2,42.5c0,30.7-0.3,55.5-0.3,63c0,6.1,4,13.3,15.4,11C415.9,449.1,480,363.1,480,261.7   C480,134.8,379.7,32,256,32z"/>
</svg>
</span>
      
<span class="new-window"><svg  height="8px"  style="enable-background:new 0 0 1000 1000;" version="1.1" viewBox="0 0 1000 1000"  xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" >
<path d="M598 128h298v298h-86v-152l-418 418-60-60 418-418h-152v-86zM810 810v-298h86v298c0 46-40 86-86 86h-596c-48 0-86-40-86-86v-596c0-46 38-86 86-86h298v86h-298v596h596z" style="fill-rule:evenodd;clip-rule:evenodd;"/>
</svg>
</span></a>
  
</div>
</div>
  </div>
</footer>

  </body>
</html>
